Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

12 Stron V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> [klasa] Zaawansowany parser bbcode (php5), advanced bbcode parser
wookieb
post
Post #161





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Narazie nie za bardzo. To repo całego projektu (czyli również przykładów) a wydzielanie gałęzi tylko na kod i ciągłe jej uaktualnienia (co każdy commit) jest bezsensowne.
Go to the top of the page
+Quote Post
mlawnik
post
Post #162





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


A gałąź z kodem (praca na niej) i merge z masterem?
Go to the top of the page
+Quote Post
wookieb
post
Post #163





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A merge usunąłby pliki usunięte w branchu z kodem.
Go to the top of the page
+Quote Post
mlawnik
post
Post #164





Grupa: Zarejestrowani
Postów: 455
Pomógł: 49
Dołączył: 12.04.2010

Ostrzeżenie: (0%)
-----


Szukałem, szukałem i... znalazłem:


http://stackoverflow.com/questions/1407638...=active#tab-top


Ale racja, to dużo roboty.
Go to the top of the page
+Quote Post
evolucja
post
Post #165





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Zgłosiłem błąd na githubie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
master_25
post
Post #166





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.09.2011

Ostrzeżenie: (0%)
-----


Witam, takie pytanie:
Czy jest w miarę prosta możliwość dodania tagu w formie:

np.

Aby został przeparsowany na
Kod
[img]n[/img]

$liczba = floor(n/1000);
<img src="strona.pl/zdjecie/$liczba/n.png" alt="n.png"/>

a jeżeli to nie jest liczba to nie wyświetlać taga?
Go to the top of the page
+Quote Post
Tanner963
post
Post #167





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 29.04.2010

Ostrzeżenie: (0%)
-----


Co muszę zrobić, aby nie zamykało automatycznie niedomkniętych tagów?
Mam ustawione:
  1. /**
  2. * Czy poprawiać poprawność użycia kolejności tagów. Np. [.b]tekst[.i] kursywą[./b] zostanie zamienione na [.b]tekst[.i] kursywą[./i][./b]
  3. * @var bool
  4. */
  5. public $validHtml = false;

jednak tagi i tak poprawia i zamyka... no a powinien wgl nieparsować (IMG:style_emoticons/default/sad.gif)
Mam najnowszą wersję z GitHuba.
Z góry dzięki (IMG:style_emoticons/default/smile.gif)

Ten post edytował Tanner963 17.09.2011, 20:17:40
Go to the top of the page
+Quote Post
wookieb
post
Post #168





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Niedomykanie a poprawa kolejności to 2 różne rzeczy.
Nie ma możliwości wyłączenia domykania tagów.

@master_25 Musisz utworzyć nowy tag i przypisać do niego funkcję parsującą (przykłądy masz w katalogu Filters).
Wersja na której możesz się wzortować jest tutaj https://github.com/wookieb/bbcode/blob/mast...ers/Youtube.php
W razie pytań pisz.
Go to the top of the page
+Quote Post
Tanner963
post
Post #169





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 29.04.2010

Ostrzeżenie: (0%)
-----


Mam kolejny problem - wstawiłem BBCode'a od kodu i do niego inne BBCode'y no i je sparsowało :| Wgrałem więc od nowa cały parser -> dalej parsuje w [.code][/.code]

Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
wookieb
post
Post #170





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A dokłądniej?
Przykład?
Go to the top of the page
+Quote Post
Tanner963
post
Post #171





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 29.04.2010

Ostrzeżenie: (0%)
-----


Sory, nie sprecyzowałem..
Poprawka:
Parsuje tag kodu tylko np.:
Kod
[.code]to w środku nie powinno być parsowane [.code]jednak to mi się parsuje[./code] [b]ale to już nie jest pogrubione[/b][./code]


Nie mam pomysłu (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
favik
post
Post #172





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 18.05.2010

Ostrzeżenie: (0%)
-----


Witam,
ogólnie klasa super, mam jednak mały mankament. Mianowicie używając tagu bbcode size i podając w nim bardzo mały parametr np 2 czcionka jest bardzo mała, a nie taka jak ustawiona dla tego tagu minimalna np 10px

Przykład:

Kod
//text pobrany z bazy danych
$text = '[size=2]test size[/size]';
$bb = new BbCode();
$bb->parse($text, false);
$out = $bb->getHtml();
...

echo $out;


wynikowy tekst jest bardzo mały i ma wielkość 2 px, nie wiem czy jest to błąd czy tak już powinno być, a może powinienem użyć jeszcze jakiejś metody?

Ten post edytował favik 27.03.2012, 21:22:08
Go to the top of the page
+Quote Post
wookieb
post
Post #173





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Masz rację - to mów wielki błąd.
Przepraszam barzdo, fix już jest w repozytorium na githubie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
xxdrago
post
Post #174





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


A ja się chciałem zapytać bo już się bawię kilka msc tym ( raz zaczynam i się podaje), no więc pisze sobie bloga mam system podstron i newsów, tam wyświetlam chciałbym wyświetlić kod dla użytkowników sformatowany w htmlspecialchars i ładnie koloruje SyntaxHighlighter w JS. W bazie danych kod wygląda tak:

Kod
[php]
function ustawienia($s) {
// Funkcja zwraca jakie ustawienia sa w bazie danych

    global $db;

    $ustawienia = 'SELECT * FROM  `ustawienia` '; // Zapytanie.

    if ($s == 'nazwa') {
        $zapytan = $db-&gt;query($ustawienia);
        $row = $zapytan-&gt;fetch_assoc();
        return $row['nazwa'];
    }

    if ($s == 'opis') {
        $zapytan = $db-&gt;query($ustawienia);
        $row = $zapytan-&gt;fetch_assoc();
        return $row['opis'];
    }
    if ($s == 'tagi') {
        $zapytan = $db-&gt;query($ustawienia);
        $row = $zapytan-&gt;fetch_assoc();
        return $row['slowa_kluczowe'];
    }
// koniec
}
[/php]


A jeżeli go wyświetlam to w efekcie dostaje:
Kod
<br>
function ustawienia($s) {<br>
// Funkcja zwraca jakie ustawienia sa w bazie danych<br>
<br>
    global $db;<br>
<br>
    $ustawienia = 'SELECT * FROM  `ustawienia` '; // Zapytanie.<br>
<br>
    if ($s == 'nazwa') {<br>
        $zapytan = $db->query($ustawienia);<br>
        $row = $zapytan->fetch_assoc();<br>
        return $row['nazwa'];<br>
    }<br>
<br>
    if ($s == 'opis') {<br>
        $zapytan = $db->query($ustawienia);<br>
        $row = $zapytan->fetch_assoc();<br>
        return $row['opis'];<br>
    }<br>
    if ($s == 'tagi') {<br>
        $zapytan = $db->query($ustawienia);<br>
        $row = $zapytan->fetch_assoc();<br>
        return $row['slowa_kluczowe'];<br>
    }<br>
// koniec<br>
}<br>


Była by możliwość usunięcia tego <br> np. w znaczniku php? ponieważ wyświetla się z tym <br> , i tak się chciałem zapytać jeżeli wyświetlam kod to po co go przesyłać przez htmlspecialchars? Skoro można to zrobić podczas dodawania np. Newsa (w kodzie nie zaufanym)?

Pozdrawiam,
Tomasz

Ten post edytował xxdrago 30.03.2012, 19:30:11
Go to the top of the page
+Quote Post
wookieb
post
Post #175





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wszystko co nie jest sparsowane bezpośrednio przez tag bbcode jest traktowane htmlspecialchars + nl2br. Musisz dodać nowy tag php i w funkcji parsującej wyłączyć wstawianie BR.

Przykładowe rozszerzenie plugin Code o Twój tag "PHP".
  1. class BbCodeFilterCode {
  2. public $tags = array(
  3. 'code' => array(
  4. 'open' => 'div class="code_wrapper"',
  5. 'close' => 'div',
  6. 'notallowed_child' => 'all',
  7. 'leave_notallowed_child' => 1,
  8. 'leave_notallowed_parent' => 1,
  9. 'parse_body' => 'parseCode'
  10. ),
  11. 'php' => array(
  12. 'open' => 'div',
  13. 'close' => 'div',
  14. 'notallowed_child' => 'all',
  15. 'leave_notallowed_child' => 1,
  16. 'parse_body' => 'parsePHP'
  17. )
  18. );
  19.  
  20. /**
  21. * Parsuje tag CODE
  22. * @param array $tag
  23. * @param array $openNode
  24. * @param array $body
  25. * @param array $closeNode
  26. */
  27. public function parseCode($tag, &$openNode, &$body, &$closeNode) {
  28. // tutaj mozemy dodać geshi czy to tez sie podoba
  29. $openNode['text'].='<div class="code_title">Kod</div><div class="code_area">';
  30. $closeNode['text'] = '</div>'.$closeNode['text'];
  31. }
  32.  
  33. public function parsePHP($tag, &$openNode, &$body, &$closeNode) {
  34. foreach ($body as &$node) {
  35. if ($node['type'] === BbCode::NODE_TYPE_TEXT) {
  36. $node['nobr'] = true;
  37. }
  38. }
  39. }
  40. }
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
xxdrago
post
Post #176





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Ok, teraz mi się podoba, jak wyłączyć htmlspecialchars?
Go to the top of the page
+Quote Post
wookieb
post
Post #177





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. $node['nobr'] = true;
  2. $node['nohtmlspecialchars'] = true'
Go to the top of the page
+Quote Post
xxdrago
post
Post #178





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Super dziękuje, teraz mam taki problem nie wiem czy mój czy klasy ale wydaje mi się ze klasy , że za tagiem code, lub quote zmniejszają mi się same litery:
Tekst z code/quote:
http://xxdrago.pl/tmp/1.gif

http://xxdrago.pl/tmp/txt_code.txt - to co wrzucam do prasowania bb-code.
http://xxdrago.pl/tmp/txt_code_html.txt - to co zostało wygenerowane przez klasę(HTML).

Tekst bez code/quote:
http://xxdrago.pl/tmp/2.gif

http://xxdrago.pl/tmp/txt_nocode.txt - czysty tekst prasowany przez bb-code
http://xxdrago.pl/tmp/txt_nocode_html.txt - tekst wygenerowany przez klasę(HTML).

W CSS nic nie mogę znaleźć...

Ten post edytował xxdrago 3.04.2012, 22:06:48
Go to the top of the page
+Quote Post
KG-
post
Post #179





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.05.2006

Ostrzeżenie: (0%)
-----


Bardzo fajny skrypt, ale znalazłem jednego niewielkiego buga (zgłosiłem już na githubie).
Przy okazji mam jedno pytanie: coś szczególnego powinienem uwzględnić, jeśli chcę dodać odpornego na XSS taga
Kod
[font="nazwa fonta do font-family"]cośtam[/font]
czy wystarczy coś w rodzaju:
Kod
        'font' => array(
            'open' => 'span',
            'close' => 'span',
            'attributes' => array(
                'font' => array(
                    'attr' => 'style',
                    'type' => 'string',
                    'name' => 'font-family:',
                    'required' => true
                )
            )
        ),


Ten post edytował KG- 24.04.2012, 13:36:10
Go to the top of the page
+Quote Post
deluks1980
post
Post #180





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


Więcej komplikacji z ustawieniem czegoś jakiegoś inteligentnego kodu niż to wszystko warte... :/

W jaki sposób mogę zmodyfikować tag size, aby dla poszczególnego atrybutu ustawiało ustawiony rozmiar?

Np.

  1. [size=1]text[/span]
odpowiadać będzie
  1. <span style="font-size: 12px;">teskt</span>

  1. [size=2]text[/span]
odpowiadać będzie
  1. <span style="font-size: 14px;">teskt</span>

  1. [size=4]text[/span]
odpowiadać będzie
  1. <span style="font-size: 20px;">teskt</span>


itd.
Go to the top of the page
+Quote Post

12 Stron V  « < 7 8 9 10 11 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:51